package com.music.glide.load.engine.bitmap_recycle

import android.graphics.Bitmap

interface KBitmapPool {

    fun getMaxSize(): Long

    fun setSizeMultiplier(sizeMultiplier: Float)

    fun put(bitmap: Bitmap?)

    /**
     * 返回一个具有指定宽度、高度和配置的 Bitmap，且仅包含透明像素。
     * 由于此方法会清除 Bitmap 中的所有像素，因此它比 getDirty(int, int, Bitmap.Config) 稍慢。
     * 如果获取的 Bitmap 将用于 android.graphics.BitmapFactory 或其他情况下（Bitmap 的每个像素都将被覆盖或清除），
     * 使用 getDirty(int, int, Bitmap.Config) 会更快。
     * 如果不确定，请使用此方法以确保正确性。
     */
    fun get(width: Int, height: Int, config: Bitmap.Config?): Bitmap

    /**
     * 与 get(int, int, Bitmap.Config) 完全相同，但返回的 Bitmap 可能未被清除，且可能包含随机数据。
     * 如果池中没有具有所需属性的 Bitmap，则会分配一个新的 Bitmap
     */
    fun getDirty(width: Int, height: Int, config: Bitmap.Config): Bitmap

    fun clearMemory()

    fun trimMemory(level: Long)

}